// pages/profile/profile.js
let app = getApp();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
      userId: '',
      phone: '',
      nickName: '',
      desc: '',
      avatarUrl: ''
    },
    token: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getUserInfo();
  },

  /**
   * 获取用户信息
   */
  getUserInfo() {
    wx.getStorage({
      key: "_token",
      success: res => {
        this.setData({
          token: res.data
        });
        
        wx.request({
          url: 'https://kf.webxyq.com/findAccountInfo',
          method: 'GET',
          data: {
            appkey: app.globalData.appkey,
            tokenString: res.data
          },
          success: res => {
            if (res.data && res.data.result && res.data.result.length > 0) {
              this.setData({
                userInfo: res.data.result[0]
              });
            }
          },
          fail: err => {
            console.error('获取用户信息失败', err);
            // 如果findAccountInfo接口失败，尝试使用findMy接口作为备选
            wx.request({
              url: 'https://kf.webxyq.com/findMy',
              method: 'GET',
              data: {
                appkey: app.globalData.appkey,
                tokenString: this.data.token
              },
              success: res => {
                if (res.data && res.data.result && res.data.result.length > 0) {
                  this.setData({
                    userInfo: res.data.result[0]
                  });
                }
              },
              fail: () => {
                wx.showToast({
                  title: '获取用户信息失败',
                  icon: 'none'
                });
              }
            });
          }
        });
      },
      fail: err => {
        wx.redirectTo({
          url: '/pages/login/login',
        });
      }
    });
  },

  /**
   * 选择并上传头像
   */
  chooseAndUploadAvatar() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: res => {
        const tempFilePath = res.tempFilePaths[0];
        
        // 显示加载中
        wx.showLoading({
          title: '上传中...',
        });
        
        // 读取图片并转为base64
        wx.getFileSystemManager().readFile({
          filePath: tempFilePath,
          encoding: 'base64',
          success: res => {
            // 获取图片类型
            const imgType = tempFilePath.split('.').pop().toLowerCase();
            
            // 上传头像
            wx.request({
              url: 'https://kf.webxyq.com/updateAvatar',
              method: 'POST',
              header: {
                "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
              },
              data: {
                appkey: app.globalData.appkey,
                tokenString: this.data.token,
                imgType: imgType || 'jpg',
                serverBase64Img: res.data // 不需要添加前缀
              },
              success: res => {
                wx.hideLoading();
                if (res.data && res.data.code === 700) {
                  wx.showToast({
                    title: '头像上传成功',
                    icon: 'success'
                  });
                  
                  // 更新本地显示的头像
                  this.setData({
                    'userInfo.avatarUrl': tempFilePath
                  });
                  
                  // 重新获取用户信息
                  setTimeout(() => {
                    this.getUserInfo();
                  }, 1000);
                } else {
                  wx.showToast({
                    title: res.data.msg || '上传失败',
                    icon: 'none'
                  });
                }
              },
              fail: err => {
                wx.hideLoading();
                console.error('上传头像失败', err);
                wx.showToast({
                  title: '上传头像失败',
                  icon: 'none'
                });
              }
            });
          },
          fail: err => {
            wx.hideLoading();
            console.error('读取图片失败', err);
            wx.showToast({
              title: '读取图片失败',
              icon: 'none'
            });
          }
        });
      }
    });
  },

  /**
   * 昵称变更
   */
  onNicknameChange(e) {
    this.setData({
      'userInfo.nickName': e.detail
    });
  },

  /**
   * 简介变更
   */
  onDescChange(e) {
    this.setData({
      'userInfo.desc': e.detail
    });
  },

  /**
   * 保存用户信息
   */
  saveUserInfo() {
    // 保存昵称
    wx.request({
      url: 'https://kf.webxyq.com/updateNickName',
      method: 'POST',
      header: {
        "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
      },
      data: {
        appkey: app.globalData.appkey,
        tokenString: this.data.token,
        nickName: this.data.userInfo.nickName
      },
      success: res => {
        console.log(res);
        if (res.data && res.data.code === 'C001') {
          // 昵称保存成功，继续保存简介
          this.saveUserDesc();
        } else {
          wx.showToast({
            title: res.data.msg || '保存昵称失败',
            icon: 'none'
          });
        }
      },
      fail: err => {
        console.error('保存昵称失败', err);
        wx.showToast({
          title: '保存昵称失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 保存用户简介
   */
  saveUserDesc() {
    wx.request({
      url: 'https://kf.webxyq.com/updateDesc',
      method: 'POST',
      header: {
        "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
      },
      data: {
        appkey: app.globalData.appkey,
        tokenString: this.data.token,
        desc: this.data.userInfo.desc
      },
      success: res => {
        if (res.data && res.data.code === 700) {
          wx.showToast({
            title: '保存成功',
            icon: 'success'
          });
          
          // 返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        } else {
          wx.showToast({
            title: res.data.msg || '保存简介失败',
            icon: 'none'
          });
        }
      },
      fail: err => {
        console.error('保存简介失败', err);
        wx.showToast({
          title: '保存简介失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 返回上一页
   */
  onClickLeft() {
    wx.navigateBack();
  }
});